/**
 * 音乐平台前端数据传输对象(DTO)类型定义
 * 基于JSDoc注释提供类型提示
 */

// ==================== 基础类型定义 ====================

/**
 * 通用API响应结构
 * @template T 响应数据类型
 * @typedef {Object} ApiResponse
 * @property {number} code - 响应状态码
 * @property {string} message - 响应消息
 * @property {T} data - 响应数据
 * @property {number} timestamp - 时间戳
 * @property {string} [requestId] - 请求ID
 */

/**
 * 分页请求参数
 * @typedef {Object} PageRequest
 * @property {number} [page] - 页码，从1开始
 * @property {number} [size] - 每页大小
 * @property {string} [sortBy] - 排序字段
 * @property {'asc'|'desc'} [sortOrder] - 排序方向
 */

/**
 * 分页响应结果
 * @template T 列表项类型
 * @typedef {Object} PageResult
 * @property {number} total - 总记录数
 * @property {number} page - 当前页码
 * @property {number} size - 每页大小
 * @property {number} [pages] - 总页数
 * @property {T[]} list - 数据列表
 */

/**
 * 错误详情
 * @typedef {Object} ErrorDetail
 * @property {string} field - 字段名
 * @property {string} message - 错误信息
 * @property {*} rejectedValue - 被拒绝的值
 */

// ==================== 用户相关类型定义 ====================

/**
 * 用户注册请求
 * @typedef {Object} UserRegisterRequest
 * @property {string} username - 用户名
 * @property {string} password - 密码
 * @property {string} email - 邮箱
 * @property {string} [phone] - 手机号
 * @property {string} [nickname] - 昵称
 * @property {number} [gender] - 性别：0-未知,1-男,2-女
 * @property {string} [birthday] - 生日 YYYY-MM-DD
 */

/**
 * 用户注册响应
 * @typedef {Object} UserRegisterResponse
 * @property {number} userId - 用户ID
 * @property {string} username - 用户名
 * @property {string} nickname - 昵称
 * @property {string} avatar - 头像URL
 */

/**
 * 用户登录请求
 * @typedef {Object} UserLoginRequest
 * @property {string} username - 用户名
 * @property {string} password - 密码
 */

/**
 * 用户登录响应
 * @typedef {Object} UserLoginResponse
 * @property {string} token - 访问令牌
 * @property {number} expireTime - 过期时间戳
 * @property {UserBasicInfo} userInfo - 用户基本信息
 */

/**
 * 用户基础信息
 * @typedef {Object} UserBasicInfo
 * @property {number} userId - 用户ID
 * @property {string} username - 用户名
 * @property {string} nickname - 昵称
 * @property {string} avatar - 头像URL
 * @property {number} level - 用户等级
 * @property {number} exp - 当前经验值
 * @property {string} membershipType - 会员类型
 * @property {boolean} isVip - 是否VIP
 */

/**
 * 用户详细信息响应
 * @typedef {Object} UserDetailResponse
 * @property {number} userId - 用户ID
 * @property {string} username - 用户名
 * @property {string} nickname - 昵称
 * @property {string} email - 邮箱
 * @property {string} [phone] - 手机号
 * @property {string} avatar - 头像URL
 * @property {number} gender - 性别
 * @property {string} [birthday] - 生日
 * @property {string} [introduction] - 个人介绍
 * @property {string} [hobby] - 爱好
 * @property {UserLevelInfo} level - 等级信息
 * @property {UserMembershipInfo} membership - 会员信息
 * @property {UserStatistics} statistics - 统计信息
 * @property {string} createTime - 创建时间
 * @property {string} lastLoginTime - 最后登录时间
 */

/**
 * 用户等级信息
 * @typedef {Object} UserLevelInfo
 * @property {number} levelId - 等级ID
 * @property {string} levelName - 等级名称
 * @property {string} levelIcon - 等级图标
 * @property {number} currentExp - 当前经验值
 * @property {number} nextLevelExp - 下一级所需经验值
 * @property {number} expToNext - 距离下一级还需经验值
 */

/**
 * 用户会员信息
 * @typedef {Object} UserMembershipInfo
 * @property {string} type - 会员类型代码
 * @property {string} typeName - 会员类型名称
 * @property {string} [endTime] - 会员到期时间
 * @property {boolean} isActive - 是否激活
 * @property {MembershipPrivileges} privileges - 会员特权
 */

/**
 * 会员特权信息
 * @typedef {Object} MembershipPrivileges
 * @property {boolean} adFree - 无广告
 * @property {boolean} highQualityAudio - 高品质音频
 * @property {boolean} downloadMusic - 下载音乐
 * @property {number} skipLimit - 跳过限制次数
 * @property {boolean} exclusiveContent - 专属内容
 */

/**
 * 用户统计信息
 * @typedef {Object} UserStatistics
 * @property {number} followingCount - 关注数
 * @property {number} followerCount - 粉丝数
 * @property {number} playlistCount - 播放列表数
 * @property {number} collectionCount - 收藏数
 * @property {number} likeCount - 点赞数
 * @property {number} totalPlayTime - 总播放时长(秒)
 * @property {number} totalPlayCount - 总播放次数
 */

/**
 * 用户信息更新请求
 * @typedef {Object} UserUpdateRequest
 * @property {string} [nickname] - 昵称
 * @property {string} [avatar] - 头像URL
 * @property {number} [gender] - 性别
 * @property {string} [birthday] - 生日
 * @property {string} [introduction] - 个人介绍
 * @property {string} [hobby] - 爱好
 */

/**
 * 密码修改请求
 * @typedef {Object} PasswordChangeRequest
 * @property {string} oldPassword - 旧密码
 * @property {string} newPassword - 新密码
 * @property {string} confirmPassword - 确认密码
 */

/**
 * 会员订阅请求
 * @typedef {Object} MembershipSubscribeRequest
 * @property {number} membershipTypeId - 会员类型ID
 * @property {string} paymentMethod - 支付方式
 * @property {number} orderAmount - 订单金额
 */

// ==================== 音乐相关类型定义 ====================

/**
 * 歌曲搜索请求
 * @typedef {Object} SongSearchRequest
 * @property {string} keyword - 搜索关键词
 * @property {number} [artistId] - 歌手ID
 * @property {number} [albumId] - 专辑ID
 * @property {string} [genre] - 音乐风格
 * @property {string} [language] - 语言
 * @property {boolean} [isVip] - 是否VIP歌曲
 * @property {number} [page] - 页码
 * @property {number} [size] - 每页大小
 * @property {string} [sortBy] - 排序字段
 * @property {'asc'|'desc'} [sortOrder] - 排序方向
 */

/**
 * 歌曲列表项
 * @typedef {Object} SongListItem
 * @property {number} songId - 歌曲ID
 * @property {string} songName - 歌曲名称
 * @property {ArtistBasicInfo} artist - 歌手信息
 * @property {AlbumBasicInfo} [album] - 专辑信息
 * @property {number} duration - 时长（秒）
 * @property {string} coverUrl - 封面URL
 * @property {string} genre - 音乐风格
 * @property {string} language - 语言
 * @property {boolean} isVip - 是否VIP歌曲
 * @property {number} playCount - 播放次数
 */

/**
 * 歌曲详情响应
 * @typedef {Object} SongDetailResponse
 * @property {number} songId - 歌曲ID
 * @property {string} songName - 歌曲名称
 * @property {ArtistBasicInfo} artist - 歌手信息
 * @property {AlbumBasicInfo} [album] - 专辑信息
 * @property {number} duration - 时长（秒）
 * @property {string} fileUrl - 音频文件URL
 * @property {string} coverUrl - 封面URL
 * @property {string} [lyricUrl] - 歌词文件URL
 * @property {string} genre - 音乐风格
 * @property {string} language - 语言
 * @property {string} releaseDate - 发行日期
 * @property {string} format - 音频格式
 * @property {number} bitRate - 比特率
 * @property {number} fileSize - 文件大小
 * @property {boolean} isVip - 是否VIP歌曲
 * @property {number} auditStatus - 审核状态
 * @property {string[]} tags - 标签
 * @property {SongStatistics} statistics - 统计信息
 * @property {string} createTime - 创建时间
 */

/**
 * 歌曲统计信息
 * @typedef {Object} SongStatistics
 * @property {number} playCount - 播放次数
 * @property {number} likeCount - 点赞数
 * @property {number} collectCount - 收藏数
 * @property {number} commentCount - 评论数
 * @property {number} shareCount - 分享数
 */

/**
 * 歌曲播放请求
 * @typedef {Object} SongPlayRequest
 * @property {number} songId - 歌曲ID
 * @property {string} [playSource] - 播放来源
 * @property {string} [deviceType] - 设备类型
 * @property {string} [quality] - 音质
 * @property {number} [position] - 播放位置
 */

/**
 * 歌曲播放响应
 * @typedef {Object} SongPlayResponse
 * @property {string} playUrl - 播放URL
 * @property {number} expireTime - 过期时间
 * @property {string} [quality] - 实际播放音质
 */

/**
 * 歌手基础信息
 * @typedef {Object} ArtistBasicInfo
 * @property {number} artistId - 歌手ID
 * @property {string} artistName - 歌手名称
 * @property {string} [artistNameEn] - 英文名
 * @property {string} avatar - 头像URL
 * @property {string} [country] - 国家/地区
 * @property {string} genre - 音乐风格
 */

/**
 * 歌手列表项
 * @typedef {Object} ArtistListItem
 * @property {number} artistId - 歌手ID
 * @property {string} artistName - 歌手名称
 * @property {string} avatar - 头像URL
 * @property {string} genre - 音乐风格
 * @property {number} followerCount - 关注数
 * @property {number} songCount - 歌曲数
 */

/**
 * 歌手详情响应
 * @typedef {Object} ArtistDetailResponse
 * @property {number} artistId - 歌手ID
 * @property {string} artistName - 歌手名称
 * @property {string} [artistNameEn] - 英文名
 * @property {string} avatar - 头像URL
 * @property {string} [cover] - 封面URL
 * @property {number} gender - 性别
 * @property {string} [country] - 国家/地区
 * @property {string} [birthDate] - 生日
 * @property {string} [debutDate] - 出道日期
 * @property {string} genre - 音乐风格
 * @property {string} [introduction] - 简介
 * @property {ArtistStatistics} statistics - 统计信息
 * @property {number} status - 状态
 * @property {string} createTime - 创建时间
 */

/**
 * 歌手统计信息
 * @typedef {Object} ArtistStatistics
 * @property {number} albumCount - 专辑数
 * @property {number} songCount - 歌曲数
 * @property {number} followerCount - 关注数
 * @property {number} totalPlayCount - 总播放数
 */

/**
 * 歌手搜索请求
 * @typedef {Object} ArtistSearchRequest
 * @property {string} keyword - 搜索关键词
 * @property {string} [genre] - 音乐风格
 * @property {string} [country] - 国家/地区
 * @property {number} [page] - 页码
 * @property {number} [size] - 每页大小
 * @property {string} [sortBy] - 排序字段
 * @property {'asc'|'desc'} [sortOrder] - 排序方向
 */

/**
 * 歌手创建请求（管理员）
 * @typedef {Object} ArtistCreateRequest
 * @property {string} artistName - 歌手名称
 * @property {string} [artistNameEn] - 英文名
 * @property {string} [avatar] - 头像URL
 * @property {string} [cover] - 封面URL
 * @property {number} gender - 性别：0-未知,1-男,2-女
 * @property {string} [country] - 国家/地区
 * @property {string} [birthDate] - 生日 YYYY-MM-DD
 * @property {string} [debutDate] - 出道日期 YYYY-MM-DD
 * @property {string} genre - 音乐风格
 * @property {string} [introduction] - 简介
 * @property {number} [status] - 状态：0-禁用,1-正常
 */

/**
 * 歌手更新请求（管理员）
 * @typedef {Object} ArtistUpdateRequest
 * @property {string} [artistName] - 歌手名称
 * @property {string} [artistNameEn] - 英文名
 * @property {string} [avatar] - 头像URL
 * @property {string} [cover] - 封面URL
 * @property {number} [gender] - 性别
 * @property {string} [country] - 国家/地区
 * @property {string} [birthDate] - 生日
 * @property {string} [debutDate] - 出道日期
 * @property {string} [genre] - 音乐风格
 * @property {string} [introduction] - 简介
 * @property {number} [status] - 状态
 */

/**
 * 专辑创建请求（管理员）
 * @typedef {Object} AlbumCreateRequest
 * @property {string} albumName - 专辑名称
 * @property {number} artistId - 歌手ID
 * @property {string} [cover] - 封面URL
 * @property {string} releaseDate - 发行日期 YYYY-MM-DD
 * @property {string} genre - 音乐风格
 * @property {string} language - 语言
 * @property {string} [recordCompany] - 唱片公司
 * @property {string} [description] - 专辑描述
 * @property {number} [status] - 状态：0-禁用,1-正常
 */

/**
 * 专辑更新请求（管理员）
 * @typedef {Object} AlbumUpdateRequest
 * @property {string} [albumName] - 专辑名称
 * @property {string} [cover] - 封面URL
 * @property {string} [releaseDate] - 发行日期
 * @property {string} [genre] - 音乐风格
 * @property {string} [language] - 语言
 * @property {string} [recordCompany] - 唱片公司
 * @property {string} [description] - 专辑描述
 * @property {number} [status] - 状态
 */

/**
 * 歌曲创建请求（管理员）
 * @typedef {Object} SongCreateRequest
 * @property {string} songName - 歌曲名称
 * @property {number} artistId - 歌手ID
 * @property {number} [albumId] - 专辑ID
 * @property {number} duration - 时长（秒）
 * @property {string} fileUrl - 音频文件URL
 * @property {string} [coverUrl] - 封面URL
 * @property {string} [lyricUrl] - 歌词文件URL
 * @property {string} genre - 音乐风格
 * @property {string} language - 语言
 * @property {string} releaseDate - 发行日期 YYYY-MM-DD
 * @property {string} format - 音频格式
 * @property {number} bitRate - 比特率
 * @property {number} fileSize - 文件大小
 * @property {boolean} [isVip] - 是否VIP歌曲
 * @property {string[]} [tags] - 标签
 * @property {number} [status] - 状态
 */

/**
 * 歌曲更新请求（管理员）
 * @typedef {Object} SongUpdateRequest
 * @property {string} [songName] - 歌曲名称
 * @property {number} [albumId] - 专辑ID
 * @property {number} [duration] - 时长（秒）
 * @property {string} [fileUrl] - 音频文件URL
 * @property {string} [coverUrl] - 封面URL
 * @property {string} [lyricUrl] - 歌词文件URL
 * @property {string} [genre] - 音乐风格
 * @property {string} [language] - 语言
 * @property {string} [releaseDate] - 发行日期
 * @property {string} [format] - 音频格式
 * @property {number} [bitRate] - 比特率
 * @property {number} [fileSize] - 文件大小
 * @property {boolean} [isVip] - 是否VIP歌曲
 * @property {string[]} [tags] - 标签
 * @property {number} [status] - 状态
 */

/**
 * 用户管理请求（管理员）
 * @typedef {Object} UserManageRequest
 * @property {number} [status] - 用户状态：0-禁用,1-正常
 * @property {string} [banReason] - 封禁原因
 * @property {string} [banEndTime] - 封禁结束时间
 */

/**
 * 用户列表查询请求（管理员）
 * @typedef {Object} UserListRequest
 * @property {string} [keyword] - 搜索关键词（用户名、昵称、邮箱）
 * @property {number} [status] - 用户状态
 * @property {string} [membershipType] - 会员类型
 * @property {string} [startDate] - 注册开始日期
 * @property {string} [endDate] - 注册结束日期
 * @property {number} [page] - 页码
 * @property {number} [size] - 每页大小
 * @property {string} [sortBy] - 排序字段
 * @property {'asc'|'desc'} [sortOrder] - 排序方向
 */

/**
 * 专辑搜索请求
 * @typedef {Object} AlbumSearchRequest
 * @property {string} keyword - 搜索关键词
 * @property {number} [artistId] - 歌手ID
 * @property {string} [genre] - 音乐风格
 * @property {string} [language] - 语言
 * @property {string} [releaseYear] - 发行年份
 * @property {number} [page] - 页码
 * @property {number} [size] - 每页大小
 * @property {string} [sortBy] - 排序字段
 * @property {'asc'|'desc'} [sortOrder] - 排序方向
 */

/**
 * 歌手按专辑音乐风格分类请求
 * @typedef {Object} ArtistByGenreRequest
 * @property {string} [genre] - 音乐风格
 * @property {number} [page] - 页码
 * @property {number} [size] - 每页大小
 * @property {string} [sortBy] - 排序字段：songCount,albumCount,followerCount
 * @property {'asc'|'desc'} [sortOrder] - 排序方向
 */

/**
 * 专辑按音乐风格分类请求
 * @typedef {Object} AlbumByGenreRequest
 * @property {string} genre - 音乐风格
 * @property {string} [language] - 语言
 * @property {string} [releaseYear] - 发行年份
 * @property {number} [page] - 页码
 * @property {number} [size] - 每页大小
 * @property {string} [sortBy] - 排序字段：releaseDate,playCount,collectCount
 * @property {'asc'|'desc'} [sortOrder] - 排序方向
 */

/**
 * 评论管理请求（管理员）
 * @typedef {Object} CommentManageRequest
 * @property {number} [status] - 评论状态：0-删除,1-正常,2-审核中
 * @property {string} [moderateReason] - 审核原因
 */

/**
 * 动态管理请求（管理员）
 * @typedef {Object} DynamicManageRequest
 * @property {number} [status] - 动态状态：0-删除,1-正常,2-审核中
 * @property {string} [moderateReason] - 审核原因
 */

/**
 * 播放列表管理请求（管理员）
 * @typedef {Object} PlaylistManageRequest
 * @property {number} [status] - 播放列表状态：0-删除,1-正常,2-审核中
 * @property {boolean} [isRecommended] - 是否推荐
 * @property {string} [moderateReason] - 审核原因
 */

/**
 * 播放列表创建请求
 * @typedef {Object} PlaylistCreateRequest
 * @property {string} name - 播放列表名称
 * @property {string} [description] - 播放列表描述
 * @property {boolean} [isPublic] - 是否公开
 * @property {string} [coverUrl] - 封面URL
 * @property {string} [tags] - 标签
 */

/**
 * 播放列表更新请求
 * @typedef {Object} PlaylistUpdateRequest
 * @property {string} [name] - 播放列表名称
 * @property {string} [description] - 播放列表描述
 * @property {boolean} [isPublic] - 是否公开
 * @property {string} [coverUrl] - 封面URL
 * @property {string} [tags] - 标签
 */

/**
 * 播放列表列表项
 * @typedef {Object} PlaylistListItem
 * @property {number} playlistId - 播放列表ID
 * @property {string} name - 播放列表名称
 * @property {string} [description] - 播放列表描述
 * @property {string} coverUrl - 封面URL
 * @property {boolean} isPublic - 是否公开
 * @property {UserBasicInfo} creator - 创建者信息
 * @property {number} songCount - 歌曲数量
 * @property {number} playCount - 播放次数
 * @property {string} createTime - 创建时间
 * @property {string} updateTime - 更新时间
 */

/**
 * 播放列表详情响应
 * @typedef {Object} PlaylistDetailResponse
 * @property {number} playlistId - 播放列表ID
 * @property {string} name - 播放列表名称
 * @property {string} [description] - 播放列表描述
 * @property {string} coverUrl - 封面URL
 * @property {boolean} isPublic - 是否公开
 * @property {UserBasicInfo} creator - 创建者信息
 * @property {string[]} tags - 标签列表
 * @property {SongListItem[]} songs - 歌曲列表
 * @property {PlaylistStatistics} statistics - 统计信息
 * @property {string} createTime - 创建时间
 * @property {string} updateTime - 更新时间
 */

/**
 * 播放列表统计信息
 * @typedef {Object} PlaylistStatistics
 * @property {number} songCount - 歌曲数量
 * @property {number} playCount - 播放次数
 * @property {number} collectCount - 收藏数
 * @property {number} shareCount - 分享数
 * @property {number} totalDuration - 总时长（秒）
 */

/**
 * 关注请求
 * @typedef {Object} FollowRequest
 * @property {number} targetId - 目标ID
 * @property {number} targetType - 目标类型（1-用户，2-歌手）
 */

/**
 * 关注列表项
 * @typedef {Object} FollowListItem
 * @property {number} targetId - 目标ID
 * @property {number} targetType - 目标类型
 * @property {string} targetName - 目标名称
 * @property {string} targetAvatar - 目标头像
 * @property {string} followTime - 关注时间
 * @property {boolean} isVerified - 是否认证
 */

/**
 * 动态创建请求
 * @typedef {Object} DynamicCreateRequest
 * @property {string} content - 动态内容
 * @property {number} [dynamicType] - 动态类型
 * @property {number} [targetId] - 目标ID
 * @property {string} [targetType] - 目标类型
 * @property {boolean} [isPublic] - 是否公开
 */

/**
 * 动态列表项
 * @typedef {Object} DynamicListItem
 * @property {number} dynamicId - 动态ID
 * @property {UserBasicInfo} user - 用户信息
 * @property {string} content - 动态内容
 * @property {number} dynamicType - 动态类型
 * @property {Object} [target] - 关联目标
 * @property {number} likeCount - 点赞数
 * @property {number} commentCount - 评论数
 * @property {boolean} isLiked - 是否已点赞
 * @property {string} createTime - 创建时间
 */

/**
 * 评论创建请求
 * @typedef {Object} CommentCreateRequest
 * @property {number} targetId - 目标ID
 * @property {string} targetType - 目标类型
 * @property {string} content - 评论内容
 * @property {number} [parentId] - 父评论ID
 */

/**
 * 评论列表项
 * @typedef {Object} CommentListItem
 * @property {number} commentId - 评论ID
 * @property {UserBasicInfo} user - 用户信息
 * @property {string} content - 评论内容
 * @property {number} likeCount - 点赞数
 * @property {number} replyCount - 回复数
 * @property {boolean} isLiked - 是否已点赞
 * @property {CommentListItem[]} [replies] - 回复列表
 * @property {string} createTime - 创建时间
 */

/**
 * 点赞请求
 * @typedef {Object} LikeRequest
 * @property {number} targetId - 目标ID
 * @property {string} targetType - 目标类型
 * @property {string} action - 操作类型（like/unlike）
 */

/**
 * 私信发送请求
 * @typedef {Object} MessageSendRequest
 * @property {number} receiverId - 接收者ID
 * @property {number} [messageType] - 消息类型
 * @property {string} content - 消息内容
 */

/**
 * 私信列表项
 * @typedef {Object} MessageListItem
 * @property {number} messageId - 消息ID
 * @property {UserBasicInfo} sender - 发送者信息
 * @property {UserBasicInfo} receiver - 接收者信息
 * @property {string} content - 消息内容
 * @property {number} messageType - 消息类型
 * @property {boolean} isRead - 是否已读
 * @property {string} sendTime - 发送时间
 */

/**
 * 收藏请求
 * @typedef {Object} CollectionRequest
 * @property {number} targetId - 目标ID
 * @property {string} targetType - 目标类型（song/album/playlist/artist）
 */

/**
 * 收藏列表项
 * @typedef {Object} CollectionListItem
 * @property {number} collectionId - 收藏ID
 * @property {number} targetId - 目标ID
 * @property {string} targetType - 目标类型
 * @property {Object} targetInfo - 目标信息
 * @property {string} collectTime - 收藏时间
 */

/**
 * 推荐请求
 * @typedef {Object} RecommendationRequest
 * @property {string} [type] - 推荐类型
 * @property {number} [size] - 推荐数量
 * @property {number} [userId] - 用户ID
 */

/**
 * 推荐响应
 * @typedef {Object} RecommendationResponse
 * @property {string} type - 推荐类型
 * @property {Object[]} items - 推荐项目
 * @property {string} reason - 推荐理由
 * @property {number} timestamp - 生成时间戳
 */

/**
 * 榜单请求
 * @typedef {Object} RankingRequest
 * @property {string} [period] - 周期（daily/weekly/monthly）
 * @property {number} [limit] - 榜单条数
 */

/**
 * 榜单响应
 * @typedef {Object} RankingResponse
 * @property {string} rankingType - 榜单类型
 * @property {string} period - 周期
 * @property {Object[]} items - 榜单项目
 * @property {string} updateTime - 更新时间
 */

/**
 * 文件上传响应
 * @typedef {Object} FileUploadResponse
 * @property {string} url - 文件URL
 * @property {string} filename - 文件名
 * @property {number} size - 文件大小
 * @property {string} type - 文件类型
 * @property {string} uploadTime - 上传时间
 */

/**
 * 系统配置响应
 * @typedef {Object} SystemConfigResponse
 * @property {Object} app - 应用配置
 * @property {Object} upload - 上传配置
 * @property {Object} payment - 支付配置
 * @property {Object} features - 功能开关
 */

/**
 * 反馈请求
 * @typedef {Object} FeedbackRequest
 * @property {string} type - 反馈类型
 * @property {string} title - 反馈标题
 * @property {string} content - 反馈内容
 * @property {string} [contact] - 联系方式
 */

/**
 * 用户管理请求
 * @typedef {Object} UserManageRequest
 * @property {number} status - 用户状态（0-禁用，1-启用）
 * @property {string} [reason] - 操作原因
 */

/**
 * 用户列表请求
 * @typedef {Object} UserListRequest
 * @property {string} [keyword] - 搜索关键词
 * @property {number} [status] - 用户状态
 * @property {string} [membershipType] - 会员类型
 * @property {string} [startDate] - 注册开始日期
 * @property {string} [endDate] - 注册结束日期
 * @property {number} [page] - 页码
 * @property {number} [size] - 每页大小
 * @property {string} [sortBy] - 排序字段
 * @property {string} [sortOrder] - 排序方向
 */

/**
 * 评论管理请求
 * @typedef {Object} CommentManageRequest
 * @property {number} status - 评论状态
 * @property {string} [reason] - 操作原因
 */

/**
 * 动态管理请求
 * @typedef {Object} DynamicManageRequest
 * @property {number} status - 动态状态
 * @property {string} [reason] - 操作原因
 */

/**
 * 播放列表管理请求
 * @typedef {Object} PlaylistManageRequest
 * @property {number} status - 播放列表状态
 * @property {string} [reason] - 操作原因
 */

/**
 * 歌手创建请求
 * @typedef {Object} ArtistCreateRequest
 * @property {string} artistName - 歌手名称
 * @property {string} [artistNameEn] - 英文名称
 * @property {string} [avatar] - 头像URL
 * @property {number} [gender] - 性别
 * @property {string} [country] - 国家/地区
 * @property {string} [birthDate] - 出生日期
 * @property {string} [debutDate] - 出道日期
 * @property {string} [genre] - 音乐风格
 * @property {string} [introduction] - 简介
 * @property {number} [status] - 状态
 */

/**
 * 歌手更新请求
 * @typedef {Object} ArtistUpdateRequest
 * @property {string} [artistName] - 歌手名称
 * @property {string} [artistNameEn] - 英文名称
 * @property {string} [avatar] - 头像URL
 * @property {number} [gender] - 性别
 * @property {string} [country] - 国家/地区
 * @property {string} [birthDate] - 出生日期
 * @property {string} [debutDate] - 出道日期
 * @property {string} [genre] - 音乐风格
 * @property {string} [introduction] - 简介
 * @property {number} [status] - 状态
 */

/**
 * 专辑创建请求
 * @typedef {Object} AlbumCreateRequest
 * @property {string} albumName - 专辑名称
 * @property {number} artistId - 歌手ID
 * @property {string} [cover] - 封面URL
 * @property {string} [releaseDate] - 发行日期
 * @property {string} [genre] - 音乐风格
 * @property {string} [language] - 语言
 * @property {string} [recordCompany] - 唱片公司
 * @property {string} [description] - 描述
 * @property {number} [status] - 状态
 */

/**
 * 专辑更新请求
 * @typedef {Object} AlbumUpdateRequest
 * @property {string} [albumName] - 专辑名称
 * @property {number} [artistId] - 歌手ID
 * @property {string} [cover] - 封面URL
 * @property {string} [releaseDate] - 发行日期
 * @property {string} [genre] - 音乐风格
 * @property {string} [language] - 语言
 * @property {string} [recordCompany] - 唱片公司
 * @property {string} [description] - 描述
 * @property {number} [status] - 状态
 */

/**
 * 歌曲创建请求
 * @typedef {Object} SongCreateRequest
 * @property {string} songName - 歌曲名称
 * @property {number} artistId - 歌手ID
 * @property {number} [albumId] - 专辑ID
 * @property {number} duration - 时长（秒）
 * @property {string} fileUrl - 音频文件URL
 * @property {string} [coverUrl] - 封面URL
 * @property {string} [lyricUrl] - 歌词文件URL
 * @property {string} [genre] - 音乐风格
 * @property {string} [language] - 语言
 * @property {string} [releaseDate] - 发行日期
 * @property {string} [format] - 音频格式
 * @property {number} [bitRate] - 比特率
 * @property {number} [fileSize] - 文件大小
 * @property {boolean} [isVip] - 是否VIP歌曲
 * @property {string[]} [tags] - 标签
 * @property {number} [status] - 状态
 */

/**
 * 歌曲更新请求
 * @typedef {Object} SongUpdateRequest
 * @property {string} [songName] - 歌曲名称
 * @property {number} [artistId] - 歌手ID
 * @property {number} [albumId] - 专辑ID
 * @property {number} [duration] - 时长（秒）
 * @property {string} [fileUrl] - 音频文件URL
 * @property {string} [coverUrl] - 封面URL
 * @property {string} [lyricUrl] - 歌词文件URL
 * @property {string} [genre] - 音乐风格
 * @property {string} [language] - 语言
 * @property {string} [releaseDate] - 发行日期
 * @property {string} [format] - 音频格式
 * @property {number} [bitRate] - 比特率
 * @property {number} [fileSize] - 文件大小
 * @property {boolean} [isVip] - 是否VIP歌曲
 * @property {string[]} [tags] - 标签
 * @property {number} [status] - 状态
 */

/**
 * 播放记录
 * @typedef {Object} PlayRecord
 * @property {number} recordId - 记录ID
 * @property {number} songId - 歌曲ID
 * @property {SongListItem} song - 歌曲信息
 * @property {string} playTime - 播放时间
 * @property {number} playDuration - 播放时长（秒）
 * @property {string} playSource - 播放来源
 * @property {string} deviceType - 设备类型
 */

/**
 * 播放统计
 * @typedef {Object} PlayStatistics
 * @property {number} totalPlayCount - 总播放次数
 * @property {number} totalPlayTime - 总播放时长
 * @property {number} uniqueSongCount - 不重复歌曲数
 * @property {Object[]} topGenres - 最爱音乐风格
 * @property {Object[]} topArtists - 最爱歌手
 * @property {Object} dailyStats - 每日统计
 * @property {Object} monthlyStats - 每月统计
 */

// ==================== 类型定义完成 ====================
// 所有类型已通过 JSDoc 注释定义，可在JavaScript项目中提供类型提示

module.exports = {
  // 导出类型定义（仅用于文档和IDE提示）
  // 在JavaScript中不需要显式导出类型，JSDoc注释会自动提供类型提示
};
